/* axios二次封装 */
import axios from 'axios';
import qs from 'qs';
// 创建axios实例对象
let instance = axios.create({
    baseURL:'http://localhost:3000'
    // baseURL:'http://192.168.110.25:3000'
})
// 将get post 合并到一块 合并成为一个函数
export default function(method,url,data,headType){
    // 当我们发送ajax 使用封装的函数时，headType（form json mul ）
    // get
    if(method == "get"){
        if(headType == 'form'){
            instance.defaults.headers["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8";
        }
        if(data){
            // url?key=value&key=value
            data = qs.stringify(data);
            url =url + "?" + data
        }
    }
    // post
    if(method == 'post'){
        if(headType == 'form'){
            instance.defaults.headers["Content-Type"] = "application/x-www-form-urlencoded;charset=utf-8";
            // post data(请求体中的数据)
            data = qs.stringify(data);
        }else if(headType == 'mul'){
            // 二进制文件选择：multipart/form-data；
            instance.defaults.headers["Content-Type"] = "multipart/form-data";
        }else{
            // application/json
            instance.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
        }
    }
    // 拦截器
    // 请求拦截器
    instance.interceptors.request.use((config)=>{
        // console.log(config);
        // 请求拦截拦截了，axios的实例对象instance的配置项，拦截后可以进行相关处理
        return config;
    })
    // 响应拦截器
    instance.interceptors.response.use(res=>{
        // console.log('响应拦截xxx')
        console.log(res);
        if(res.data){
            res = res.data
        }
        return res;
    })
    return new Promise((resolve,reject)=>{
        instance({
            method,
            url,
            data
        }).then(res=>{
            // console.log(res);
            resolve(res);
        }).catch(err=>{
            reject(err);
        })
    })

}